/* 
自定义Promise
*/

((window) => {
    /**
     * 构造函数
     * @param  excutor 执行器函数
     */
    function Promise(excutor) {

    }

    /**
     * 指定成功和失败的回调, 并返回一个新的promise
     * @param {*} onResolved 成功的回调 => 用于得到成功的value
     * @param {*} onRejected 失败的回调 => 用于得到失败的reason
     */
    Promise.prototype.then = function (onResolved, onRejected) {

    }

    /**
     * 指定失败的回调, 并返回一个新的promise
     * @param {*} onRejected 失败的回调 => 用于得到失败的reason
     */
    Promise.prototype.catch = function (onRejected) {

    }


    /**
     *  返回一个成功的promise, value为指定的value
     * @param {*} value 
     */
    Promise.resolve = function (value) {

    }

    /**
     *  返回一个失败的promise, reason为指定的reason
     * @param {*} reason
     */
    Promise.reject = function (reason) {

    }

    /**
     * 返回一个promise, 如果promises都成功, 它才成功, 成功的value为所有value组成的数组, 只要有一个失败, 那它就失败了
     * @param {*} promises 
     */
    Promise.all = function (promises) {

    }

    /**
     * 返回一个promise, 由第一个完成的promie来决定它的结果
     * @param {*} promises 
     */
    Promise.race = function (promises) {

    }

    /**
     * 返回一个promise, 当所有promise都完成时它就成功, value值为所有promise的value或reason组成的数组
     * @param {*} promises 
     */
    Promise.allSettled = function (promises) {

    }
})(window);